package com;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * Map : 无序可重复 value可重复,key 不可重复
 * 
 * Map 和 Collection 集合不一样,但是操作都是类似的
 * 
 * put(key,value) 添加数据
 * 
 * clear()
 * size()
 * isEmpty()
 * get(key) 根据 key 获取 value 值
 * values() : 获取所有的value,以集合的形式返回
 * containsKey(key) 
 * containsValue(value)
 * keySet() 获取所有的key,以set形式返回
 * entrySet() 获取键值对,以set形式返回
 * remove()
 * map 不能直接遍历
 * @author lenovo
 * @Date 2020年7月18日
 * @Time 上午10:02:34
 */
public class Collection_14_Map_01 {

	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		Map map = new HashMap();
		map.put("A", "one");
		map.put("B", "two");
		map.put("C", "three");
		map.put(1003, "rose"); // Integer
		map.put('A', "1000");
		map.put(65, "1000");
		map.put("'A'", "3000");
		map.put("A", "2000"); // value 覆盖
		// 可以什么都是 null ,但是没什么意义
		// key 只能有一个为null,因为唯一,value可以有很多null
		map.put(null, null);

		// 8个
		System.out.println(map.size());

		// false
		System.out.println(map.containsKey("1003"));

		// true
		System.out.println(map.containsValue("2000"));

		// 2000
		System.out.println(map.get("A"));

		System.out.println("---");
System.out.println("++++++++++++++++++");
		// 获取所有的value
		Collection values = map.values();
		for (Object object : values) {
			System.out.println(object);
		}
		System.out.println("==========");
//		null
//		2000
//		1000
//		1000
//		two
//		three
//		rose
//		3000
		System.out.println("==--");
		// 根据key删除,返回对应的value值
		map.remove(null);
		System.out.println("===");

		// 把map中的key取出,形成set
		Set s = map.keySet();
		for (Object object : s) {
			System.out.println(object + " : " + map.get(object));
		}
//		A : 2000
//		A : 1000
//		65 : 1000
//		B : two
//		C : three
//		1003 : rose
//		'A' : 3000
		System.out.println("-==-");

		// 把map中的所有entry 取出,形成Set
		// 并且 entry 覆写了 toString方法,会以 key=value的形式展示
		Set set = map.entrySet();
		for (Object object : set) {
			System.out.println(object);
		}
//		A=2000
//				A=1000
//				65=1000
//				B=two
//				C=three
//				1003=rose
//				'A'=3000
		System.out.println("---");
		System.out.println(1);
		System.out.println("1");
		System.out.println('1');
	}

}
